home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / textual / pdftops / goo / h / parseargs < prev   
Text File  |  1996-06-08  |  2KB  |  72 lines

  1. /*
  2.  * parseargs.h
  3.  *
  4.  * Command line argument parser.
  5.  *
  6.  * Copyright 1996 Derek B. Noonburg
  7.  */
  8.  
  9. #ifndef PARSEARGS_H
  10. #define PARSEARGS_H
  11.  
  12. #ifdef __cplusplus
  13. extern "C" {
  14. #endif
  15.  
  16. #include "gtypes.h"
  17.  
  18. /*
  19.  * Argument kinds.
  20.  */
  21. typedef enum {
  22.   argFlag,            /* flag (present / not-present) */
  23.                 /*   [val: GBool *]             */
  24.   argInt,            /* integer arg    */
  25.                 /*   [val: int *] */
  26.   argFP,            /* floating point arg */
  27.                 /*   [val: double *]  */
  28.   argString,            /* string arg      */
  29.                 /*   [val: char *] */
  30.   /* dummy entries -- these show up in the usage listing only; */
  31.   /* useful for X args, for example                            */
  32.   argFlagDummy,
  33.   argIntDummy,
  34.   argFPDummy,
  35.   argStringDummy
  36. } ArgKind;
  37.  
  38. /*
  39.  * Argument descriptor.
  40.  */
  41. typedef struct {
  42.   char *arg;            /* the command line switch */
  43.   ArgKind kind;            /* kind of arg */
  44.   void *val;            /* place to store value */
  45.   int size;            /* for argString: size of string */
  46.   char *usage;            /* usage string */
  47. } ArgDesc;
  48.  
  49. /*
  50.  * Parse command line.  Removes all args which are found in the arg
  51.  * descriptor list <args>.  Stops parsing if "--" is found (and removes
  52.  * it).  Returns gFalse if there was an error.
  53.  */
  54. extern GBool parseArgs(ArgDesc *args, int *argc, char *argv[]);
  55.  
  56. /*
  57.  * Print usage message, based on arg descriptor list.
  58.  */
  59. extern void printUsage(char *program, char *otherArgs, ArgDesc *args);
  60.  
  61. /*
  62.  * Check if a string is a valid integer or floating point number.
  63.  */
  64. extern GBool isInt(char *s);
  65. extern GBool isFP(char *s);
  66.  
  67. #ifdef __cplusplus
  68. }
  69. #endif
  70.  
  71. #endif
  72.